package com.atguigu.gulimall.product.feign;

import com.atguigu.common.to.SkuReductionTo;
import com.atguigu.common.to.SpuBoundTo;
import com.atguigu.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * @className: CouponFeignService
 * @description: 调用优惠卷服务的 Feign 服务
 * @date: 2020/11/8
 * @author: cakin
 */
// 调用哪个远程服务
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
    /**
     * 功能描述：远程保存积分信息
     *
     * @param spuBoundTo 待保存的积分信息
     * @return R 返回给前端的数据
     * @author cakin
     * @date 2020/11/8
     * @description:
     * 1 @RequestBody将这个对象转为json。
     * 2 注册中心中找到 gulimall-coupon服务，给 /coupon/spubounds/save 发送请求。
     *   将上一步转的json放在请求体位置，发送请求；
     * 3 对方服务收到请求。请求体里有json数据。
     *   (@RequestBody SpuBoundsEntity spuBounds)；将请求体的json转为SpuBoundsEntity；
     *
     * 总结：只要json数据模型是兼容的。双方服务无需使用同一个to（传输对象）
     */
    @PostMapping("/coupon/spubounds/save")
    R saveSpuBounds(@RequestBody SpuBoundTo spuBoundTo);

    /**
     * 功能描述：sku的优惠、满减等信息的保存
     *
     * @author cakin
     * @date 2020/11/8
     * @param skuReductionTo sku的优惠、满减等信息
     * @return R 返回给前端的数据
     */
    @PostMapping("/coupon/skufullreduction/saveinfo")
    R saveSkuReduction(@RequestBody SkuReductionTo skuReductionTo);
}
